package Persistencia;

import Entidades.EntUsuario;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.List;
import java.util.ArrayList;
/**
 *
 * @author Patricia
 */
public class DaoUsuario {
    
public List<EntUsuario> ListarUsuario(Connection con) {
        //usuario,clave, perfil, estado
        List<EntUsuario> resul = new ArrayList<EntUsuario>();
        //    c.setId("no existe");
        try {
            PreparedStatement p = con.prepareStatement(UsuarioSqlHelper.getAllUsuario());
           // System.out.println(ArrendatarioSqlHelper.getAllArrendatario());
            ResultSet r = p.executeQuery();
            while (r.next()) {
                EntUsuario c = new EntUsuario();
                c.setCedula(r.getString("Cedula"));
                c.setContrasena(r.getString("Contrasena"));
                c.setRol(r.getString("Rol"));


                resul.add(c);

            }
        } catch (Exception e) {
            e.printStackTrace();
            //    return c;

        } finally {
            try {
                con.close();
            } catch (Exception ex) {
            }

        }
        return resul;
    }
    
public EntUsuario autenticar(Connection c, EntUsuario usuario) {
        String sql = UsuarioSqlHelper.autenticar();
        String resultado = null;
        EntUsuario usuario1 = null;
        try {
            PreparedStatement st = c.prepareStatement(sql);

            ResultSet rs = null;

            st.setString(1, usuario.getCedula());
            st.setString(2, usuario.getContrasena());
            rs = st.executeQuery();

            if (rs.next()) {
                usuario1 = new EntUsuario();
                usuario1.setCedula(rs.getString("Cedula"));                
                usuario1.setContrasena(rs.getString("Contrasena"));
                usuario1.setRol(rs.getString("Rol"));
            } 
        } catch (SQLException ex) {
            Logger.getLogger(DaoUsuario.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                c.close();
            } catch (SQLException ex) {
                Logger.getLogger(DaoUsuario.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

        return usuario1;
    }

public int crear(Connection c, EntUsuario usuario){
        String sql = UsuarioSqlHelper.crear();
        int resultadoCrear = 0;
        try {
            PreparedStatement st = c.prepareStatement(sql);

            st.setString(1, usuario.getCedula());
            st.setString(2, usuario.getContrasena());
            st.setString(3, usuario.getRol());
           

            resultadoCrear = st.executeUpdate();

        } catch (SQLException ex) {
            Logger.getLogger(DaoUsuario.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                c.close();
            } catch (SQLException ex) {
                Logger.getLogger(DaoUsuario.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

        return resultadoCrear;
    }

    public int modificar(Connection c, EntUsuario usuario) {
        String sql = UsuarioSqlHelper.modificar();
        int resultadoModificar = 0;
        try {
            PreparedStatement st = c.prepareStatement(sql);
            
            st.setString(1, usuario.getCedula());
            st.setString(2, usuario.getContrasena());
            st.setString(3, usuario.getRol());
         

            resultadoModificar = st.executeUpdate();

        } catch (SQLException ex) {
            Logger.getLogger(DaoUsuario.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                c.close();
            } catch (SQLException ex) {
                Logger.getLogger(DaoUsuario.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

        return resultadoModificar;
    }

       public EntUsuario Buscar(Connection con, String Cedula) {
        EntUsuario c = new EntUsuario();
        c.setCedula("Este cliente no existe");
        try {
            PreparedStatement cl = con.prepareStatement(UsuarioSqlHelper.Buscar(Cedula));
            ResultSet r = cl.executeQuery();
            while (r.next()) {
               c.setCedula(r.getString(1));
               c.setContrasena(r.getString(2));
               c.setRol(r.getString(3));
            
            }
        } catch (Exception e) {
            e.printStackTrace();
            return c;

        } finally {
            try {
                con.close();
            } catch (Exception ex) {
            }

        }
        return c;
    }

 public int eliminar(Connection c, EntUsuario usuario) {
        String sql = UsuarioSqlHelper.eliminar();
        int resultadoEliminar = 0;
        try {
            PreparedStatement st = c.prepareStatement(sql);

            st.setString(1, usuario.getCedula());

            resultadoEliminar = st.executeUpdate();

        } catch (SQLException ex) {
            Logger.getLogger(DaoUsuario.class.getName()).log(Level.SEVERE, null, ex);

        } finally {
            try {
                c.close();
            } catch (SQLException ex) {
                Logger.getLogger(DaoUsuario.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

        return resultadoEliminar;
    }
}


